/*
题目描述：数字序列中某一位的数字
数字以 012345678910111213141516171819...格式序列化到一个字符序列中。
方法：

 */
public class E44 {
    public static void main(String[] args) {
        System.out.println(digitAtIndex(1001));
    }

    public static int digitAtIndex(int index){
        if(index < 0){
            return -1;
        }
        int digits = 1;
        while(true){
            int numbers = countOfIntegers(digits);
            if(index < numbers * digits){
                return digitAtIndex(index, digits);
            }
            index -= digits * numbers;
            digits ++;
        }
    }

    //计算 m 位数字共有多少个
    public static int countOfIntegers(int digits){
        if(digits == 1){
            return 10;
        }
        int count = (int)Math.pow(10, digits - 1);
        return 9 * count;
    }

    //找出那个数字
    public static int digitAtIndex(int index, int digits){
        int number = beginNumber(digits) + index / digits;
        int indexFromRight = digits - index % digits;
        for(int i = 1; i < indexFromRight; i++){
            number /= 10;
        }
        return number % 10;
    }

    //求出第一个 m 位数
    public static int beginNumber(int digits){
        if(digits == 1){
            return 0;
        }
        return (int)Math.pow(10, digits - 1);
    }
}
/*
7
 */